<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- Copyright 2006 Zelix Pty Ltd (ABN 47 078 740 093) --> 
<html>
<body bgcolor="#FFFFFF">

<h1>&quot;Obfuscate Class Suffix Exclude Parameter&quot; Window</h1>
Contents:
<ul>
<li><a href="#Overview">Overview</a>
<li><a href="#package">Containing package tab</a>
   <ul>
   <li><a href="#packageName">Name field</a>
   </ul>
<li><a href="#class">Class tab</a>
   <ul>
   <li><a href="#suffix">Suffix field</a>
   <li><a href="#extends">Extends field</a>
   <li><a href="#implements">Implements field</a>
   </ul>
<li><a href="#parameter">&quot;Parameter so far&quot; field</a>
<li><a href="#explanation">Explanation area</a>
</ul>
<h2><a name="Overview">Overview</a></h2>
Use this dialog to create or modify a class suffix exclusion parameter.  
The finished parameter will appear in the <a href="025.html">Obfuscate Name Exclusion</a> window's <b>&quot;Exclusion parameter&quot;</b> list. 
<p>
A class suffix exclusion parameter is a relatively complex and specialized exclusion parameter. It works in two stages.
If a class matches a class suffix exclusion parameter then
<ol>
<li>its specified suffix is excluded from being renamed</li> 
<li>if a class X can be found that has an unqualified name matching the non-suffix part of the matching class's name, 
then the non-suffix part of the matching class's name will be renamed to the new name of class X.</li>
</ol>
Its operation is best explained with an example. 
Consider a class suffix exclude parameter specifying the suffix &quot;_Stub&quot;. 
A hypothetical class named &quot;Class1_Stub&quot; matches the parameter so the suffix part of the name will be retained. 
The non-suffix part of the matching class name &quot;Class1_Stub&quot; is &quot;Class1&quot;. 
If there is a class in the same package named &quot;Class1&quot; and if, when obfuscating, &quot;Class1&quot; is renamed to &quot;abc&quot; 
then the class &quot;Class1_Stub&quot; will be renamed to &quot;abc_Stub&quot;.

<p>
A class suffix exclusion parameter can be thought of as consisting of the following components (mandatory components in bold):
<ul>
<li>package qualifiers
<li><b>suffix</b>
<li>extends clause
<li>implements clause
</ul>
For a class to match a given exclusion parameter, it must match <b>all</b> the components of the parameter.  
You can modify the package qualifier component of the parameter by selecting the <b>&quot;<a href="#package">Containing package</a>&quot;</b> tab. 
All the other components can be modified by selecting the <b>&quot;<a href="#class">Class</a>&quot;</b> tab.

<h2><a name="package">Containing package tab</a></h2>
<h3><a name="packageName">Name field</a></h3>
Enter the package name.  You may use the &quot;*&quot; wildcard.  For example:
<p>
<table border=1>
<tr>
   <td align="center">
       <b>Parameter</b>
   </td>
   <td align="center">
      <b>Matches</b>
   </td>
</tr> 
<tr>
   <td>
       <code>*</code>
   </td>
   <td>
      any package name
   </td>
</tr> 
<tr>
   <td>
       <code>pack1.pack2</code>
   </td>
   <td>
      only <code>pack1.pack2</code>
   </td>
</tr> 
<tr>
   <td>
       <code>pack1.p*</code>
   </td>
   <td>
      any subpackages of <code>pack1</code> that start with &quot;<code>p</code>&quot;
   </td>
</tr> 
</table>


<h2><a name="class">Class tab</a></h2>

<h3><a name="suffix">Suffix field</a></h3>
Enter the suffix to the class name that you wish to exclude from being removed when the class is renamed. An example of a suffix is &quot_Stub&quot;.  
However, note that the standard <b>RMI</b> and <b>java beans</b> suffixes are handled automatically by 
the default exclusions with which Zelix KlassMaster<sup><font size=-2>TM</font></sup> is initially shipped.


<h3><a name="extends">Extends field</a></h3>
Optional. Enter the <b>fully qualified</b> class name that a matching class must directly or indirectly extend. You cannot use wildcards.

<h3><a name="implements">Implements field</a></h3>
Optional. Enter the <b>fully qualified</b> interface names that a matching class must directly or indirectly implement. 
If you specifiy more than one interface name then you must separate the names with commas. You cannot use wildcards.



<h2><a name="parameter">&quot;Parameter so far&quot; field</a></h2>
Displays the exclusion parameter specified so far in &quot;ZKM Script&quot; syntax.

<h2><a name="explanation">Explanation area</a></h2>
Displays a plain language explanation of the effect of the exclusion parameter specified so far.


<p>
<hr>
<font size=-2>&copy; 2006 Zelix Pty Ltd</font>
</body>
</html>

